package com.os.osframe.scaffold.create;

import com.os.osframe.scaffold.xml.ReadXmlObj;
import com.os.osframe.scaffold.domain.ScaffoldXmlTable;

import java.util.List;

/**
 * 自动生成代码工厂
 * Created by wangdc on 2015-4-27.
 */
public class AutoCreateCodeFactory {
    /**
     * 创建所有代码
     * @param module
     * @param packages
     * @throws Exception
     */
    public static void createCode(String packages) throws Exception{
        List list= ReadXmlObj.getXmlObjList(packages);//读取配置的xml信息
        if(list==null || list.isEmpty()){
            System.out.println("未读取到任何表信息或读取xml信息异常");
            return;
        }
        for(int i=0;i<list.size();i++){//循环创建每个表的jsp和类文件
            //创建jsp文件
            CreateJspCode createJspCode=new CreateJspCode((ScaffoldXmlTable)list.get(i));
            createJspCode.stringDeal(packages);
            createJspCode.create(packages);
            //创建类文件
            CreateClassCode createClassCode=new CreateClassCode((ScaffoldXmlTable)list.get(i));
            createClassCode.stringDeal(packages);
            createClassCode.create(packages);

            //创建js 控制器文件
            CreateJsCode createJsCode=new CreateJsCode((ScaffoldXmlTable)list.get(i));
            createJsCode.stringDeal(packages);
            createJsCode.create(packages);
        }
        //创建资源文件
        CreateResCode createResCode=new CreateResCode(list);
        createResCode.stringDeal(packages);
        createResCode.create(packages);
        //创建导航文件
        CreateNavCode createNavCode=new CreateNavCode(list);
        createNavCode.stringDeal(packages);
        createNavCode.create(packages);
        //创建首页控制器文件
        CreateIndexCode createIndexCode=new CreateIndexCode();
        createIndexCode.stringDeal(packages);
        createIndexCode.create(packages);

        //创建app js文件
        CreateJsAppCode createJsAppCode=new CreateJsAppCode(list);
        createJsAppCode.stringDeal(packages);
        createJsAppCode.create(packages);
    }

    /**
     * 创建jsp代码
     * @param packages
     * @throws Exception
     */
    public static void createJspCode(String packages) throws Exception{
        List list= ReadXmlObj.getXmlObjList( packages);//读取配置的xml信息
        for(int i=0;i<list.size();i++){//循环创建每个表的jsp和类文件
            //创建jsp文件
            CreateJspCode createJspCode=new CreateJspCode((ScaffoldXmlTable)list.get(i));
            createJspCode.stringDeal(packages);
            createJspCode.create(packages);
        }
    }

    /**
     * 创建类文件
     * @param module
     * @param packages
     * @throws Exception
     */
    public static void createClassCode(String packages) throws Exception{
        List list= ReadXmlObj.getXmlObjList( packages);//读取配置的xml信息
        for(int i=0;i<list.size();i++){//循环创建每个表的jsp和类文件
            //创建类文件
            CreateClassCode createClassCode=new CreateClassCode((ScaffoldXmlTable)list.get(i));
            createClassCode.stringDeal(packages);
            createClassCode.create(packages);
        }
    }

    /**
     * 创建资源文件
     * @param module
     * @param packages
     * @throws Exception
     */
    public static void createResCode(String packages) throws Exception{
        List list= ReadXmlObj.getXmlObjList( packages);//读取配置的xml信息
        //创建资源文件
        CreateResCode createResCode=new CreateResCode(list);
        createResCode.stringDeal(packages);
        createResCode.create(packages);
    }
    /**
     * 转码
     * @param module
     * @param packages
     * @throws Exception
     */
    public static void transCode(String packages) throws Exception{
        //创建资源文件
        CreateResCode createResCode=new CreateResCode();
        createResCode.transCode( packages);
    }
    /**
     * 创建导航文件
     * @param module
     * @param webModule
     * @param packages
     * @throws Exception
     */
    public static void createNavCode(String webModule,String packages) throws Exception{
        List list= ReadXmlObj.getXmlObjList(packages);//读取配置的xml信息
        //创建导航文件
        CreateNavCode createNavCode=new CreateNavCode(list);
        createNavCode.stringDeal(packages);
        createNavCode.create(packages);
    }
    /**
     * 创建首页控制器文件
     * @param module
     * @param packages
     * @throws Exception
     */
    public static void createIndexCode(String packages) throws Exception{
        //创建首页控制器文件
        CreateIndexCode createIndexCode=new CreateIndexCode();
        createIndexCode.stringDeal(packages);
        createIndexCode.create(packages);
    }

    /**
     * 创建app js文件
     * @param module
     * @param packages
     * @throws Exception
     */
    public static void createJsAppCode(String packages) throws Exception{
        //创建首页控制器文件
        CreateJsAppCode createJsAppCode=new CreateJsAppCode();
        createJsAppCode.stringDeal(packages);
        createJsAppCode.create(packages);
    }

    /**
     * 创建js 控制器文件
     * @param module
     * @param packages
     * @throws Exception
     */
    public static void createJsCode(String packages) throws Exception{
        //创建首页控制器文件
        CreateJsCode createJsCode=new CreateJsCode();
        createJsCode.stringDeal(packages);
        createJsCode.create(packages);
    }
}
